在真正開始進入 web
開發之前,我們必須要好好的理解 web 會用到的名詞與其運作原理,這樣在開發時才不會不清楚自己在做什麼,至於今天要說什麼呢,就讓我們繼續看下去~
我們可以先了解一下,在瀏覽器的 search bar 中輸入網址按下 enter 到網頁顯示的這段過程中到底會發生了哪些事情,首先我們先看張圖
這張圖顯示了要透過網址存取一個網站的簡略流程,在這當中可以發現幾項資訊
1.客戶端(Client)
2.IP
3.網址(https://www.google.com)
4.DNS
5.網頁伺服器(Server)
6.Request
7.Response
首先我們針對以上的名詞做非常非常簡單的定義
使用者用來存取網頁的應用程式,常見的像是由 Google 所提供的 chrome
、Mozilla 所提供的 Firefox
或是微軟的 Edge
,這些應用程式的作用在於與不同的網頁伺服器進行交流。
【備註】整台電腦也可以稱為客戶端,因為我們不一定是使用瀏覽器對伺服器進行交流,像是我們可以透過 command line 輸入 curl https://www.google.com
進行存取,這時候客戶端就變成了 terminal
了。
我們經常聽人家說查到你的 IP
,那 IP
到底是一個什麼東西呢?其實 IP
就是 Internet Protocol
的縮寫,位於OSI模型中網路層裡一個通訊協定,每一台機器都會有一個獨立的 IP 位置,主要的功能在於讓網際網路中的 client 端可以找到我們,其實就把它想成是網際網路中的 門牌位置
即可。
IP 的組成為四組數字(如下),每個數字中由小數點進行分隔
125.227.112.3
關於更詳細的 IP 介紹大家可以到這邊來看。
為 Domain Name System
的縮寫,主要的功用在於查詢並轉換 網址
與 IP
。
詳細的 DNS 介紹大家可以到這邊來看。
用於轉換一個或是多個 IP 的位置,主要是因為 IP 位置又長又難記,因此使用了網址來進行轉換
大家可以發現在網址之前都會 http://
或是 https://
的出現,那這是什麼呢?
http 位於 OSI模型的第七層,是超文本傳輸協定(Hyper Text Transfer Protocol)的縮寫,主要的目的在於提供一種發佈與接收 html
頁面的方法。
廣義的定義為可以連線到網際網路、具 IP 位置並且可以處理外來 Request 的機器,常見的 Web Server 有 nginx
、IIS
、Apache
等等。
【備註】伺服器不一定要具有對外的 IP,如果前面有一台負載平衡器的話就可以不需要,至於什麼是負載平衡器,這個未來我們會另外開一集單獨說明(老高口吻)。
在這邊我們所提的 Request 就是 Http 請求
,然而要執行請求有著特定的 方法
,以下分別介紹常見的幾種方法
用於 取得
特定資料,意思就是不對資料做任何的修改,基本上可以理解為單純要 看
資料所使用的方法。
用於 提交
資料,基本使用的情境就是在 建立
資料。
用於 取代
現有資料,使用此方法必須將資料的內容完整的提交,沒有在提交內容中的資料會遺失。
用於 修改
資料,只需要提交要修改的內容即可。
用於 刪除
資料,使用此方法會刪除特定資源。
http 的回應通常都是以 status code
來分辨目前的情況如何,status code
為 100 ~ 599 間的數字,基本上依照區間總共分為以下五種
以下介紹常見的 Response
使用 HTTP GET
方法如果沒有問題都會回傳 200
,也就是沒有問題的拉!
使用 POST
、PUT
或是 PATCH
方法時如果成功的話,都會回傳 201
,表示資源被成功的建立。
使用 DELETE
方法如果成功執行,就會回傳 204
,表示資源被成功的刪除,沒有任何內容。
更多的 Response 狀態可以參考這裡。
名詞定義完之後,我們可以簡單的就一個透過瀏覽器發出 HTTP GET
請求到看到回應的流程做一個說明。
基本上發出請求後簡略的分成四個步驟(如上圖),以下我們分別講這四個動作在做什麼
https://www.google.com
的 IP 位置HTTP GET
請求。今天主要是跟大家分享在存取一個網站其實背後是做了很多動作的,了解了基本的 Web 概念後,明天我們可以正式的踏入 coding 的世界了,開始使用 Golang
開發一個簡單的 Web,大家拭目以待吧!
【PS】開賽到了第三天,今天終於沒有壓線發文了QQ